package com.hzit.interceptor;

import org.springframework.stereotype.Component;
import org.springframework.util.AntPathMatcher;
import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.Arrays;
import java.util.List;

/**
 * 类名：
 * 作者：WF
 * 功能：
 */
@Component
public class LoginInterceptor implements HandlerInterceptor {
	//1. 功能：判断session中是否有登录用户对象，如果有证明是一个合法登录用户，否则，跳转到登录页面
	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
		// 方法一【放行白名单】：此写法是用代码实现的放行
		//1.0 定义要放行的白名单
		// List<String> whiteList = Arrays.asList("/user/login.do");
		//1.1 得到当前请求的uri地址
		// String requestURI = request.getRequestURI();
		// if(whiteList.contains(requestURI)){
		// 	return true;
		// }
		// 方法二【放行白名单】
		// String requestURI = request.getRequestURI();
		// AntPathMatcher matcher = new AntPathMatcher();
		// boolean match = matcher.match("/user/login.do", requestURI);
		// if(match){
		// 	return true;
		// }
		// 1.2 得到session对象
		HttpSession session = request.getSession();
		//1.3 得到用户对象
		Object user = session.getAttribute("user");
		//1.4 判断是否有值
		if(user == null){       // 没有登录，就到登录页面进行登录
			response.sendRedirect("/login.jsp");
			return false;
		}
		// 1.5 如果user有值就放行
		return true;
	}
}
